#include "stm32f4xx.h"                  // Device header
#include "stm32f4xx_conf.h"

uint8_t DM_J4310_2EC_CANSend(uint8_t ID,uint8_t *Data)
{
	CanTxMsg TxMessage;
	TxMessage.StdId=0x100+ID;//高位ID标准标识符0x1FF
	TxMessage.RTR=CAN_RTR_Data;//数据帧
	TxMessage.IDE=CAN_Id_Standard;//标准格式
	TxMessage.DLC=0x08;//8字节数据段
	TxMessage.Data[0]=Data[0];//ID5电流高八位
	TxMessage.Data[1]=Data[1];//ID5电流低八位
	TxMessage.Data[2]=Data[2];//ID6电流高八位
	TxMessage.Data[3]=Data[3];//ID6电流低八位
	TxMessage.Data[4]=Data[4];//ID7电流高八位
	TxMessage.Data[5]=Data[5];//ID7电流低八位
	TxMessage.Data[6]=Data[6];//ID8电流高八位
	TxMessage.Data[7]=Data[7];//ID8电流低八位
	
	uint8_t mbox=CAN_Transmit(CAN1,&TxMessage);//发送数据并获取邮箱号
	uint16_t i=0;
	while((CAN_TransmitStatus(CAN1,mbox)==CAN_TxStatus_Failed)&&(i<0XFFF))i++;//等待发送结束
	if(i>=0xFFF)return 0;//发送失败
	return 1;//发送成功
}

void DM_J4310_2EC_Init(void)
{
	uint8_t Start[8]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC};
	DM_J4310_2EC_CANSend(0x01,Start);
}

void DM_J4310_2EC_Set(uint8_t ID,float Position,float V)
{
	uint8_t Data[8],*pbuf,*vbuf;
	pbuf=(uint8_t*)&Position;
	vbuf=(uint8_t*)&V;

	Data[0]=*pbuf;
    Data[1]=*(pbuf+1);
    Data[2]=*(pbuf+2);
    Data[3]=*(pbuf+3);
    Data[4]=*vbuf;
    Data[5]=*(vbuf+1);
    Data[6]=*(vbuf+2);
    Data[7]=*(vbuf+3);
	DM_J4310_2EC_CANSend(ID,Data);
}	
